<?php

class VotantesParser {

    const NAME_MAX_LENGTH = 256;
    const EMAIL_MAX_LENGTH = 256;
    //ERRORES
    const FIELD_TO_LONG = -1;
    const INVALID_EMAIL = -2;
    const FORMAT_ERROR = -3;
    const OPEN_FILE_ERROR = -4;
    const FILE_FORMAT_ERROR = -5;

    var $vot_dao;
    function  __construct() {
        $this->vot_dao = new VotanteDao();;
    }

    function importarListaTextoPlano($lista, $id_encuesta, $id_controlador){
        $delimitador = " - ";
        $votantes = array();
        $lista = explode("\n", $lista);
        foreach($lista as $k=>$line){
            if(empty($line))
                continue;
            $temp = explode($delimitador, $line);
            if(count($temp) != 2)
                return self::FORMAT_ERROR;

            $nombre = $temp[0];
            $email = $temp[1];

            if((strlen($nombre) > self::NAME_MAX_LENGTH) ||(strlen($email) > self::EMAIL_MAX_LENGTH))
                return self::FIELD_TO_LONG;

            if(!$this->vot_dao->validarEmail($email))
                return self::INVALID_EMAIL;

            $votantes[] = new Votante("", $nombre, $email, $id_encuesta, $id_controlador);

        }

        return ($votantes);

    }

    function importarListaArchivoCSV($archivo, $id_encuesta, $id_controlador){
        //Validacion extencion .csv archivo
        $arr = explode(".", $archivo['name']);
        $ext = $arr[sizeof($arr)-1];
        if($ext != "csv")
            return self::FILE_FORMAT_ERROR;

        $fh = fopen($archivo['tmp_name'], 'r');
        if(!$fh)
            return self::OPEN_FILE_ERROR;

        $row == 0;
        $votantes = array();
        while (($fila = fgetcsv($fh, 1000, ";")) !== false) {
            $row++;
            if($row == 1) continue;
            if(count($fila)<4) return self::FORMAT_ERROR;
            $nombre = $fila[1] . " " . $fila[2];
            $email = $fila[3];
            if(!$this->vot_dao->validarEmail($email))
                return self::INVALID_EMAIL;
            $votantes[] = new Votante(null, $nombre, $email, $id_encuesta, $id_controlador);
            
        }

        fclose($fh);

        return $votantes;
        
        
    }
}
?>
